package com.situation.controller;

import com.github.pagehelper.PageInfo;
import com.situation.annotation.ControllerEndpoint;
import com.situation.pojo.DO.BizSupplier;
import com.situation.service.BizSupplierService;
import com.situation.util.RespUtil;
import javafx.util.converter.LocalDateTimeStringConverter;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.time.LocalDateTime;
import java.util.List;

@RestController
@RequestMapping("/api/supplier")
public class BizSupplierController {
    @Autowired
    private BizSupplierService bizSupplierService;

    /**
     * 添加物资来源
     * @param bizSupplier 物资来源对象
     * @return 返回int类型 1为成功，0为失败
     */
    @ControllerEndpoint(exceptionMessage = "添加物资来源失败",operation = "添加物资来源")
    @PostMapping("/add")
    @RequiresPermissions({"supplier:add"})
    public RespUtil add(BizSupplier bizSupplier){
        bizSupplier.setCreateTime(LocalDateTime.now());
        bizSupplier.setModifiedTime(LocalDateTime.now());
        int i = bizSupplierService.add(bizSupplier);
        if (i==1){
            return RespUtil.ok();
        }else
            return RespUtil.fail();
    }

    /**
     * 删除物资来源
     * @param id 物资来源id
     * @return 返回int类型，1为成功，0为失败
     */
    @ControllerEndpoint(exceptionMessage = "删除物资来源失败",operation = "删除物资来源")
    @DeleteMapping("/delete/{id}")
    @RequiresPermissions({"supplier:delete"})
    public RespUtil delete(@PathVariable("id")Long id){
        int i = bizSupplierService.delete(id);
        if (i==1){
            return RespUtil.ok();
        }else
            return RespUtil.fail();
    }

    /**
     * 根据id查询物资来源
     * @param id 物资来源id
     * @return 返回单个物资对象
     */
    @GetMapping("/edit/{id}")
    @RequiresPermissions({"supplier:edit"})
    public RespUtil selectById(@PathVariable("id")Long id){
        BizSupplier bizSupplier = bizSupplierService.selectSupplierById(id);
        if (bizSupplier!=null){
            return RespUtil.ok().setData(bizSupplier);
        }else {
            return RespUtil.fail();
        }
    }

    /**
     * 查询全部物资来源
     * @return 返回全部物资来源
     */
    @GetMapping("/findAll")
    public RespUtil findAll(){
        PageInfo<BizSupplier> all = bizSupplierService.findAll();
        if (all!=null){
            return RespUtil.ok().setData(all);
        }else
            return RespUtil.fail();
    }

    /**
     * 多条件查询物资来源
     * @param bizSupplier 物资来源对象
     * @param pageNum 初始页码
     * @param pageSize 每页数据条数
     * @return 返回符合条件的物资来源合集
     */
    @GetMapping("/findSupplierList")
    public RespUtil findSupplierList(BizSupplier bizSupplier,int pageNum,int pageSize){
        PageInfo<BizSupplier> supplierList = bizSupplierService.findSupplierList(bizSupplier,pageNum,pageSize);
        if (supplierList!=null){
            return RespUtil.ok().setData(supplierList);
        }else {
            return RespUtil.fail();
        }
    }

    /**
     * 跟新物资来源对象
     * @param bizSupplier 修改后的物资对象
     * @return 返回int类型，1为成功，0为失败
     */
    @ControllerEndpoint(exceptionMessage = "更新物资来源失败",operation = "跟新物资来源")
    @PutMapping("/update/{id}")
    @RequiresPermissions({"supplier:update"})
    public RespUtil update(@PathVariable("id")Long id,BizSupplier bizSupplier){
        bizSupplier.setModifiedTime(LocalDateTime.now());
        bizSupplier.setId(id);
        int i = bizSupplierService.update(bizSupplier);
        if (i==1){
            return RespUtil.ok();
        }else
            return RespUtil.fail();
    }

}
